/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002-2006
* Sleepycat Software. All rights reserved.
*
* $Id: DatabaseTrigger.java,v 1.1 2006/05/06 08:59:30 ckaestne Exp $
*/
package com.sleepycat.je;
import com.sleepycat.je.txn.Locker;
/**
* Implemented to receive database update notifications.
*
* <p>The databaseUpdated() method may perform additional database operations
* using the transaction passed to it, or by starting a new transaction.
* The transaction passed may not be explicitly committed or aborted.</p>
*/
interface DatabaseTrigger {
/**
* Notifies the trigger that it has been added and will start receiving
* update notifications.
*
* @param db the database to which the trigger was added.
*/
void triggerAdded(Database db);
/**
* Notifies the trigger that it has been removed and will stop receiving
* update notifications.
*
* @param db the database from which the trigger was removed.
*/
void triggerRemoved(Database db);
/**
* Notifies the trigger that a put or delete operation has been performed
* on the database.
*
* <p>When a new entry is inserted, oldData will be null and newData will
* be non-null.</p>
*
* <p>When an existing entry is updated, oldData and newData will be
* non-null.</p>
*
* <p>When an existing entry is deleted, oldData will be non-null and
* newData will be null.</p>
*
* @param db the database that was modified.
*
* @param locker the internal locker.
*
* @param priKey the primary key, which is never null.
*
* @param oldData the primary data before the change, or null if the record
* did not previously exist.
*
* @param newData the primary data after the change, or null if the record
* has been deleted.
*/
void databaseUpdated(Database db,
Locker locker,
DatabaseEntry priKey,
DatabaseEntry oldData,
DatabaseEntry newData)
throws DatabaseException;
}